home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / demovers / scripter / demo / fak.sic < prev    next >
Text File  |  1998-09-26  |  968b  |  45 lines

  1. /*
  2.  * Berechnung einige Fakultaeten, sowohl rekursiv als auch iterativ.
  3.  * Bis zur Fakultaet von 15 kann mit Integern gerechnet werden. Fuer
  4.  * groessere Werte reicht der Wertebereich dann nicht mehr aus, aber
  5.  * in Scripter kann man dann einfach mit Floats weiterrechnen, da alle
  6.  * Operatoren in den Fakultaetsfunktionen auch mit Floats arbeiten.
  7.  */
  8.  
  9. for (i = 0; i <= 15; ++i) {
  10.     printf("iterativ: %d! = %d\n", i, iter_fak(i));
  11.     printf("rekursiv: %d! = %d\n", i, rec_fak(i));
  12. }
  13.  
  14. /*
  15.  * Jetzt gehts mit Floats weiter. Die Praezision muss ein wenig erhoeht
  16.  * werden, da es sonst schnell Ueberlauefe gibt.
  17.  */
  18. precision(32);
  19.  
  20. for (i = 16.0; i <= 30.0; i += 1.0) {
  21.     printf("iterativ: %0.0f! = %0.0f\n", i, iter_fak(i));
  22.     printf("rekursiv: %0.0f! = %0.0f\n", i, rec_fak(i));
  23. }
  24.  
  25.  
  26. proc iter_fak(n)
  27. local result;
  28. {
  29.     result = 1;
  30.     while (n > 1) {
  31.         result *= n;
  32.         n -= 1;
  33.     }
  34.     return result;
  35. }
  36.  
  37.  
  38. proc rec_fak(n);
  39. {
  40.     if (n < 2)
  41.         return 1;
  42.     else
  43.         return n * rec_fak(n - 1);
  44. }
  45.